# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import relationship, backref
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///treta.db')
Base = declarative_base()
class Naturalidade(Base):
	__tablename__ = 'naturalidades'
	id = Column(Integer, primary_key=True)
	nome = Column(String)
	def __init__(self, nome):
		self.nome = nome
class Aluno(Base):
	__tablename__ = 'alunos'
	id = Column(Integer, primary_key=True)
	nome = Column(String)
	numero = Column(Integer)
	curso = Column(String)
	naturalidade_id = Column(Integer, ForeignKey('naturalidades.id'))
	nacao = relationship("Naturalidade", backref=backref('alunos', order_by=id))
	def __init__(self, nome, numero, curso, naturalidade):
		self.nome = nome
		self.numero = numero
		self.curso = curso
		self.naturalidade = naturalidade

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()
portugal = Naturalidade('Portugal')
espanha = Naturalidade('Espanha')
franca = Naturalidade('Franca')
session.add(portugal)
session.add(espanha)
session.add(franca)
session.commit()

aluno1 = Aluno('Tiago Bond', '007', 'Espeleologia', portugal)
aluno2 = Aluno('Barbara Bond', '008', 'Comunicacao', espanha)
aluno3 = Aluno('Manuel Bond', '009', 'Filosofia', franca)
session.add(aluno1)
session.add(aluno2)
session.add(aluno3)
session.commit()

print "Nomes"
for obj in session.query(Aluno):
	print obj.nome.upper()
print
for obj in session.query(Aluno).filter(Aluno.nome=='Barbara Bond'):
	print "informacao sobre:"
	print "nome = ", obj.nome
	print "numero {0} e curso {1}".format(obj.numero, obj.curso.upper())
